Simplify the move_focus api
authorMatthias Clasen <mclasen@redhat.com>
Sat, 2 Mar 2019 17:52:56 +0000 (12:52 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 17 Mar 2019 01:24:44 +0000 (21:24 -0400)
No need to pass the array in from the outside.

gtk/gtkwidget.c
gtk/gtkwidgetfocus.c
gtk/gtkwidgetprivate.h

index fe9a15f5bd45b23df951e9cbd5876d59e6f94460..6563563c9c9589816b8ba5c77daec21a562c44e6 100644 (file)
@@ -5459,17 +5459,8 @@ gtk_widget_real_focus (GtkWidget         *widget,
     }
   else
     {
-      GPtrArray *focus_order = g_ptr_array_new ();
-      gboolean ret = FALSE;
-
-      /* Try focusing any of the child widgets, depending on the given @direction */
-
-      gtk_widget_focus_sort (widget, direction, focus_order);
-      ret = gtk_widget_focus_move (widget, direction, focus_order);
-
-      g_ptr_array_unref (focus_order);
-
-      if (ret)
+      /* Try focusing any of the child widgets, depending on the given direction */
+      if (gtk_widget_focus_move (widget, direction))
         return TRUE;
     }
 
index b1abae3894d5d2b06de16e15e71bec193b98869c..c29adfdbe050db035e7f02b81d32dea5c0979394 100644 (file)
@@ -450,13 +450,17 @@ gtk_widget_focus_sort (GtkWidget        *widget,
 
 gboolean
 gtk_widget_focus_move (GtkWidget        *widget,
-                       GtkDirectionType  direction,
-                       GPtrArray        *focus_order)
+                       GtkDirectionType  direction)
 {
+  GPtrArray *focus_order;
   GtkWidget *focus_child = gtk_widget_get_focus_child (widget);
   int i;
+  gboolean ret = FALSE;
+
+  focus_order = g_ptr_array_new ();
+  gtk_widget_focus_sort (widget, direction, focus_order);
 
-  for (i = 0; i < focus_order->len; i ++)
+  for (i = 0; i < focus_order->len && !ret; i++)
     {
       GtkWidget *child = g_ptr_array_index (focus_order, i);
 
@@ -465,18 +469,17 @@ gtk_widget_focus_move (GtkWidget        *widget,
           if (focus_child == child)
             {
               focus_child = NULL;
-
-                if (gtk_widget_child_focus (child, direction))
-                  return TRUE;
+              ret = gtk_widget_child_focus (child, direction);
             }
         }
       else if (_gtk_widget_is_drawable (child) &&
                gtk_widget_is_ancestor (child, widget))
         {
-          if (gtk_widget_child_focus (child, direction))
-            return TRUE;
+          ret = gtk_widget_child_focus (child, direction);
         }
     }
 
-  return FALSE;
+  g_ptr_array_unref (focus_order);
+
+  return ret;
 }
index ae8595e4dd43bb4b65674219fbffac36d1eb719c..314d793090ff3dc6c6fc9a521825736f0f08c512 100644 (file)
@@ -317,8 +317,7 @@ void              gtk_widget_focus_sort                    (GtkWidget        *wi
                                                             GtkDirectionType  direction,
                                                             GPtrArray        *focus_order);
 gboolean          gtk_widget_focus_move                    (GtkWidget        *widget,
-                                                            GtkDirectionType  direction,
-                                                            GPtrArray        *focus_order);
+                                                            GtkDirectionType  direction);
 void              gtk_widget_get_surface_allocation         (GtkWidget *widget,
                                                             GtkAllocation *allocation);